<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <h2>dom更新时机</h2>
    <p>count: {{ count }}</p>
    <button v-on:click="fn">btn</button>


    <ul>
      <li v-for="item in list">{{ item }}</li>
    </ul>
    <button v-on:click="add">添加赵六</button>
  </div>

  <script src="../vue3.js"></script>
  <script>
    const { createApp, nextTick  } = Vue;
    createApp({
      data() {
        return {
          count: 1,
          list: ["张三", "里斯", "王五"]
        }
      },
      methods: {
        fn() {
          // 因为dom操作是非常消耗性能的
          // 目的是为了减少dom操作

          // 数据的改变和页面的渲染并不是一起完成的
          this.count++;

          // console.log(this.count);
          // console.log(document.querySelector("p").innerHTML);

          // setTimeout(() => {
          //   console.log(document.querySelector("p").innerHTML);
          //   this.count++;
          // }, 0)


          // nextTick表示的是下一次事件循环的时候再执行
          // 这里面的内容会等待到这一次的页面渲染完以后再执行
          nextTick(() => {
            console.log(document.querySelector("p").innerHTML);
            this.count++;
          })
          
          
        },
        async add() {
          // this.list.push("赵六");
          // nextTick(() => {
          //   console.log(document.querySelector("ul").clientHeight);
          // })
          // setTimeout(() => {
          //   console.log(document.querySelector("ul").clientHeight);
          // }, 0)
          
          this.list.push("赵六");
          await nextTick();
          console.log(document.querySelector("ul").clientHeight);
        }
      }
    }).mount("#app");
  </script>
</body>
</html>